iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
Security

點錯遊戲的我也只好硬著頭皮上了 系列 第 23

[網頁漏洞] JWT - 神秘的權杖

  • 分享至 

  • xImage
  •  

開始卡...卡...卡關了


12. JaWT Scratchpad

Check the admin scratchpad! https://2019shell1.picoctf.com/problem/32267/ or http://2019shell1.picoctf.com:32267
試著偷看 admin 的記事本!
https://ithelp.ithome.com.tw/upload/images/20201007/201036887aiDAwlQBQ.png

HINT:

What is that cookie?
Have you heard of JWT?

WRITEUP:

網頁有一個能輸入使用者名稱的欄位值
https://ithelp.ithome.com.tw/upload/images/20201007/201036887JOclWAp44.png

但是輸入 admin 的話會被拒絕使用
https://ithelp.ithome.com.tw/upload/images/20201007/20103688e6LE0yDntC.png

嘗試注入 SQL: admin' -- 也失敗
https://ithelp.ithome.com.tw/upload/images/20201007/20103688XP9e4LZC7H.png

起手式: 打開開發者工具,切換到”Cookies” 發現有一個 jwt 的設定值
https://ithelp.ithome.com.tw/upload/images/20201008/20103688JzqoGcW2Ao.png

Elements 頁面的網頁原始碼則有幾個連結,其一是JWT。進入網站後將Cookie 中的 jwt 內容貼上
https://ithelp.ithome.com.tw/upload/images/20201008/20103688XbPzN9UycE.png

可以看到解出的內容(payload)就有 user 的名稱。這裡我們改為 admin 後,token 會立即更新,先將此值複製起來...
https://ithelp.ithome.com.tw/upload/images/20201008/20103688d88WM1O0sg.png

回到網頁,切換到 Cookies 分頁,將得到的新 token 值貼上去後...
https://ithelp.ithome.com.tw/upload/images/20201008/20103688uOw9z9MI7H.png

重新整理,果然就得到...錯誤?!
https://ithelp.ithome.com.tw/upload/images/20201008/20103688bweegLjsDN.png

嗯,回到 jwt 網站反覆測試後,會發現 payload 改過的值就算再改回來,還是得不到原來的 token ,因此一定是少了哪裡的資訊。詳細看 jwt 的網頁的右下方,會發現其實還有一個 secret 值,而這個值就是在加密時會帶上的神秘參數,若沒有指定的話會結成網頁驗証失敗。
https://ithelp.ithome.com.tw/upload/images/20201008/20103688ka9Ct4pKu7.png

因此可以推測本題的重點除了 jwt 的解碼之外,破解 secret 值也是關鍵之一。

回到頁面的資訊,除了 jwt 的連結外,最下方也有一個神秘的John 連結。John 是一個密碼破解的工具,配合 HINT 來看,整個流程應該就是要破解 secret 值後,修改 payload 再 encdoe 成 user: admin 的 jwt偽裝登入。

google “john jwt”可以得知Johne的使用方法,其中參數可以指定加密模式以及字典檔。

加密模式在之前丟入 jwt 網站時可得知為 HS256,使用以下指令等待許久後即可破解出 secret 值為 ilovepico。

john jwt.txt --format=HMAC-SHA256
Created directory: /home/YOURNAME/.john
Using default input encoding: UTF-8
Loaded 1 password hash (HMAC-SHA256 [password is key, SHA256 512/512 AVX512BW 16x])
Will run 4 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst, rules:Wordlist
Proceeding with incremental:ASCII
ilovepico        (?)
1g 0:01:42:15 DONE 3/3 (2020-10-07 04:35) 0.000162g/s 15210Kp/s 15210Kc/s 15210KC/s tmjndhad2..iloviptny
Use the "--show" option to display all of the cracked passwords reliably
Session completed

最後重複之前更改的步驟,在 jwt 網站的 secret 填入 ilovepico ,再修改 payload 即可得到正確的 token。
https://ithelp.ithome.com.tw/upload/images/20201008/20103688FZMuS1xFwE.png

回到網站,將Cookies 中 jwt 的值替後後,即可以 admin 登入,在 scratchpad 得到 flag。
https://ithelp.ithome.com.tw/upload/images/20201008/20103688j5xc8PAeCd.png

後記: 字典檔可以自行產生或是使用 kali 系統內建的檔案,如本題不是故意刁難的情況下,可以google “kali 字典檔” 使用較小的rockyou.txt 迅速破解。

john jwt.txt --wordlist=/usr/share/wordlists/rockyou.txt --format=HMAC-SHA256 

ANSWER:

picoCTF{jawt_was_just_what_you_thought_6ba7694bcc36bdd4fdaf010b2ec1c2c3}


上一篇
[網頁漏洞] 資料庫漏洞 - 不要急著吃綿花糖
下一篇
[網頁漏洞] Javascript - 修正圖檔
系列文
點錯遊戲的我也只好硬著頭皮上了 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言